package 力扣;

import java.awt.*;

/**
 * @author yyq
 * @create 2022-03-21 10:37
 */
public class leetcode541 {
    public static void main(String[] args) {
        System.out.println(reverseStr("krmyfshbspcgtesxnnljhfursyissjnsocgdhgfxubewllxzqhpasguvlrxtkgatzfybprfmmfithphckksnvjkcvnsqgsgosfxc"
                ,20));
    }
    public static String reverseStr(String s, int k) {

        if(k==1) return s;
        char[] chars=new char[s.length()];
        // 定义back移动i次 2k
        int i=s.length()/(k*2);

        int pre=0;
        int back=0;
        int index=0;
        // 情况一
        if(i==0){
            //  介于 k - 2k 之间
            if(s.length()-pre>k){
                for (int j=k-1;j>=0;j--){
                    chars[index] = s.charAt(j);
                    index++;
                }
                for (int j=k;j<s.length();j++){
                    chars[index] = s.charAt(j);
                    index++;
                }
            }
            else {
                for (int j=s.length()-1;j>=0;j--){
                    chars[index] = s.charAt(j);
                    index++;
                }
            }
        }
        // 情况二
        if(i>0){
            while(i!=0){
                int begin=back;
                back=back+2*k;
                pre=back-k;
                for (int j=pre-1;j>=begin;j--){
                    chars[index]=s.charAt(j);
                    index++;
                }
                for (int j=pre;j<back;j++){
                    chars[index]=s.charAt(j);
                    index++;
                }

                i--;
            }
            // 判断剩余多少
            if(s.length()-back>k){
                for (int j=back+k-1;j>=back;j--){
                    chars[index]=s.charAt(j);
                    index++;
                }
                for (int j=back+k;j<s.length();j++){
                    chars[index]=s.charAt(j);
                    index++;
                }
            }else {
                for (int j=s.length()-1;j>=back;j--){
                    chars[index]=s.charAt(j);
                    index++;
                }
            }
        }

        return new String(chars);
    }
}
